home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / packer / xpkarchive / examples / xcopy.c < prev    next >
C/C++ Source or Header  |  1995-03-09  |  2KB  |  85 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. #include <libraries/xpkarchive.h>
  5.  
  6. struct Library *XpkArchiveBase;
  7.  
  8. main(int argc,char *argv[])
  9. {
  10.    int a;
  11.    XarHandle *src,*dst;
  12.    LONG Error;
  13.  
  14.    XpkArchiveBase=OpenLibrary("xpkarchive.library",1);
  15.    if(!XpkArchiveBase) {
  16.       fprintf(stderr,"Cannot open xpkarchive.library\n");
  17.       exit(0);
  18.    }
  19.  
  20.    if(argc<4) {
  21.       fprintf(stderr,"Usage: %s <src_arc> <dst_arc> <file1>::<out1> [<file2>::<out2> ...]\n",argv[0]);
  22.       goto fail1;
  23.    }
  24.  
  25.    if(!(src=XarOpenArchive(XAR_ArchiveName,argv[1],
  26.                            XAR_Error,&Error,TAG_DONE))) {
  27.       fprintf(stderr,"Cannot open source archive.Error: %ld\n",Error);
  28.       goto fail1;
  29.    }
  30.  
  31.    if(!(dst=XarOpenArchive(XAR_ArchiveName,argv[2],
  32.                            XAR_ArchiveMode,XAR_ModeAppend,
  33.                            XAR_Error,&Error,TAG_DONE))) {
  34.       fprintf(stderr,"Cannot open source archive.Error: %ld\n",Error);
  35.       goto fail2;
  36.    }
  37.  
  38.  
  39.    for(a=3;a<argc;a++) {
  40.       char tmp[100],*p;
  41.       int gen=0;
  42.       strcpy(tmp,argv[a]);
  43.       if(p=rindex(tmp,',')) {
  44.          if(sscanf(p+1,"%d",&gen)!=1) {
  45.             fprintf(stderr,"Invalid generation\n");
  46.             break;
  47.          }
  48.          *p=0;
  49.          gen--;
  50.       }
  51.       printf("Generation %d of %s\n",gen+1,tmp);
  52.  
  53.       XarCopyFile(XAR_Archive,src,XAR_DestArchive,dst,
  54.                   XAR_FileName,tmp,XAR_Generation,gen,
  55.                   XAR_AutoNextGen,0,
  56.                   XAR_Error,&Error,TAG_DONE);
  57.  
  58.       if(Error>=XARERROR_LEVEL) {
  59.          fprintf(stderr,"Fatal Error: %ld\n",Error);
  60.          break;
  61.       }
  62.    }
  63.  
  64.    XarCloseArchive(dst);
  65. fail2:
  66.    XarCloseArchive(src);
  67. fail1:
  68.    CloseLibrary(XpkArchiveBase);
  69.    exit(0);
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.